<?php
class SeguimientosController extends AppController{

    var $name = 'Seguimientos';
    var $appModule = 'Expediente';
	var $helpers = array('Html', 'Form', 'Number', 'Codigo','GetList','Ajax', 'TextDate');
	public $components = array('RequestHandler');
	function index() {
		$q = $this->getBusqueda($this->data['Seguimiento']['busqueda']);
		$this->set('q', $q);
		$this->Seguimiento->recursive = -1;
		$conditions = array(
					'Seguimiento.activo'=>true);
		if (!empty($q)){	        
			$conditions = array(
					'Seguimiento.activo'=>true,	                    
					'or'=>array('Seguimiento.codigo SIMILAR TO'=>$q,
								'Seguimiento.acciones SIMILAR TO'=>"%$q%",
								'Seguimiento.resultados SIMILAR TO'=>"%$q%"
					)
				);
		}

		$this->paginate['Seguimiento'] = array(
				'conditions'=>$conditions,
				'order'=>array('Seguimiento.codigo'=>'asc')          
			);		        

		$this->set('materias', $this->paginate('Seguimiento'));
		$this->set('limite', $this->limite);
	}
	function add($expediente_id = null) {
		if (!empty($this->data)) {
			$usuario = $this->Session->read('Usuario');
			$this->data['Seguimiento']['empresa_id'] = $this->empresaId(); // segun sesion
			$this->data['Seguimiento']['usuario_creacion_id'] = $this->usuarioId(); // segun sesion
			$this->data['Seguimiento']['fecha_creacion'] = 'now()';
			$this->data['Seguimiento']['codigo'] = $this->Seguimiento->generateCodigo();
			$this->Seguimiento->create();
			if ($this->Seguimiento->save($this->data)) {
				$this->Session->setFlash(__('El Seguimiento ha sido guardado', true));
				if(empty($expediente_id)){
					$this->redirect(array('action'=>'index'));	
				} else {
					$this->redirect(array('controller'=>'Expedientes', 'action'=>'view',$expediente_id));
				}				
			} 
			else {
				$this->Session->setFlash(__('El Seguimiento no ha podido se guardado. Intente nuevamente..', true));
			}
		} else {
			if(!empty($expediente_id)){
				$expediente = $this->Seguimiento->Expediente->find('first', array(
								'recursive'=>-1,
								'conditions'=>array('Expediente.id'=>$expediente_id, 'Expediente.activo'=>true)));				
				$this->data['Seguimiento']['expediente_id'] = $expediente_id;
				$this->data['Expediente']['numero_expediente'] = $expediente['Expediente']['numero_expediente'];
			}	
		}		
		$this->data['Seguimiento']['codigo'] = $this->Seguimiento->generateCodigo();
		$acciones = $this->Seguimiento->Accione->find('list', array(
								'order'=>array('Accione.descripcion'=>'asc'),
								'conditions'=>array('Accione.activo'=>true)));
		$dependencias = $this->Seguimiento->Dependencia->find('list', array(
											'order'=>array('Dependencia.id'=>'asc'),
											'conditions'=>array('Dependencia.activo'=>true)));
		$this->set('expediente_id', $expediente_id);
		$this->set('acciones', $acciones);
		$this->set('dependencias', $dependencias);
	}

	function edit($id = null, $expediente_id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Seguimiento no existe', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
			$usuario = $this->Session->read('Usuario');
			$this->data['Seguimiento']['usuario_modificacion_id'] = $this->usuarioId(); // segun sesion
			$this->data['Seguimiento']['fecha_modificacion'] = 'now()';
			if ($this->Seguimiento->save($this->data)) {
				$this->Session->setFlash(__('El Seguimiento ha sido guardado', true));
				if(empty($expediente_id)){
					$this->redirect(array('action'=>'index'));	
				} else {
					$this->redirect(array('controller'=>'Expedientes', 'action'=>'view',$expediente_id));
				}
			} else {
				$this->Session->setFlash(__('El Seguimiento no ha podido se guardado. Intente nuevamente.', true));
			}
		}
		else {
			$this->data = $this->Seguimiento->find('first', array('conditions'=>array('Seguimiento.id'=>$id),	
											'contain'=>array(
													'Accione', 'Dependencia','Encargado'=>array('Tercero'), 'Expediente'
											)));
			$this->data['Encargado']['Tercero']['nombre_completo'] = $this->data['Encargado']['Tercero']['apellido_paterno'].' '.$this->data['Encargado']['Tercero']['apellido_materno'].', '.$this->data['Encargado']['Tercero']['nombres'];
			
		}
		$acciones = $this->Seguimiento->Accione->find('list', array('conditions'=>array('Accione.activo'=>true)));
		$dependencias = $this->Seguimiento->Dependencia->find('list', array('conditions'=>array('Dependencia.activo'=>true)));
		$this->set('expediente_id', $expediente_id);
		$this->set('acciones', $acciones);
		$this->set('dependencias', $dependencias);
	}
	
	function delete($id = null, $verbose = true) {	
		if ($this->RequestHandler->isAjax()) {
			Configure::write('debug', 0); //quito el debugger
			$this->autoRender = false;//desabilito el auto dibujado
			$this->autoLayout = false;//desabilito el auto layout
			$this->header('Content-Type: application/json');			
		}	
		if (!$id) {
			if ($verbose){
				if ($this->RequestHandler->isAjax()) {					
					echo json_encode(array('result'=>false , 'mensaje'=>'Id de Seguimiento invalido'));
					die;
				} else{
					$this->Session->setFlash(__('Id de Seguimiento invalido', true));
					$this->redirect(array('action'=>'index'));	
				} 				
			}
			else return false;
		}
		$this->Seguimiento->recursive = -1;
		$data = $this->Seguimiento->find('first',array('recursive'=>-1,'conditions'=>array('Seguimiento.id'=>$id)));
		$data['Seguimiento']['activo']=false;
		$data['Seguimiento']['usuario_borrado_id']=$this->usuarioId();
		$data['Seguimiento']['fecha_borrado']='now()';
		$result = (boolean)$this->Seguimiento->save($data['Seguimiento']);
		$mensaje = $result?'El registro fue eliminado':'El registro no fue eliminado';				
		if ($verbose){
			if ($this->RequestHandler->isAjax()) {				
				echo json_encode(array('result'=>$result , 'mensaje'=>$mensaje));
				die;
			} else{
				$this->Session->setFlash(__($mensaje, true));
				$this->redirect(array('action'=>'index'));				
			}
		} else{			
			return (boolean)$result;
		} 
	}

    function process(){// procesa anulaciones y eliminaciones en bloque
        $op = isset($this->params['form']['delete'])?'eliminar':'anular';
        $flag = true;
        $i = 0;
        foreach($this->data as $item){
            if ($item['id']!='0'){
                if(isset($this->params['form']['delete'])){ // eliminar
                    $flag = $this->delete($item['Seguimiento']['id'], false);
                }
                if (!$flag){
                    $data = $this->Seguimiento->read(null, $item['Seguimiento']['id']);
                    $this->Session->setFlash(__("Se ha producido un error al $op el Seguimiento #".$data['Seguimiento']['codigo'], true));
                    break;
                }
            }
            $i++;
        }
        if ($flag && $i > 0){
            $this->Session->setFlash(__("El proceso de $op Seguimiento se ha realizado con exito.", true));
        }
        $this->redirect(array('action'=>'index'));
    }
    
    function buscar($q = null){
        $result = '';
        //estableciendo par�metros de b�squeda
        if(!empty($this->params['url']['q'])){
            $q = $this->params['url']['q'];
        } elseif(!empty($this->params['form']['q'])) {
            $q = $this->params['form']['q'];
        } elseif(!empty($this->data['Seguimiento']['q'])){
            $q = $this->data['Seguimiento']['q'];
        }

        if(empty($q)){
            $result = array('no ha establecido los par�metros correctamente');
        } else {
            $q = strtoupper($q);
			$this->Seguimiento->Behaviors->attach('Containable');
            $result = $this->Seguimiento->find('all',array(
                'conditions'=>array(
                    'Seguimiento.activo'=>true,
					'OR'=>array(
                        'Seguimiento.codigo LIKE'=>$q,
						'Seguimiento.descripcion LIKE'=>"$q%"
					)
                ),
                'limit'=>100
            ));
        }

        //para peticiones de autocompletado
        $res = array();
        if(!empty($this->params['url']['autocomplete']) || !empty($this->params['form']['autocomplete'])){
            foreach($result as $value){ 
                $res[] = array('value'=>$value['Seguimiento']['id'], 'display'=>'<span style="color:gray;font-size:.9em">'. $value['Seguimiento']['codigo'] .'</span><div style="float:right;font-size:.8em" title="'. $value['Seguimiento']['razon_social'] .'">'. $value['Seguimiento']['razon_social'] .'</div>');
            }
            $result = $res;
        }

        if ($this->RequestHandler->isAjax()){
            $this->_ajaxify($result);
        } else {
            return $result;
        }
    }
}
?>